<html>
<head><meta charset="utf-8"><title>merge commit chat · general · Zulip Chat Archive</title></head>
<h2>Stream: <a href="https://rust-lang.github.io/zulip_archive/stream/122651-general/index.html">general</a></h2>
<h3>Topic: <a href="https://rust-lang.github.io/zulip_archive/stream/122651-general/topic/merge.20commit.20chat.html">merge commit chat</a></h3>

<hr>

<base href="https://rust-lang.zulipchat.com">

<head><link href="https://rust-lang.github.io/zulip_archive/style.css" rel="stylesheet"></head>

<a name="161002065"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122651-general/topic/merge%20commit%20chat/near/161002065" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/122651-general/topic/merge.20commit.20chat.html#161002065">(Mar 17 2019 at 15:07)</a>:</h4>
<p>what I don't understand is why we think merge commits are so bad</p>



<a name="161002201"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122651-general/topic/merge%20commit%20chat/near/161002201" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jake Goulding <a href="https://rust-lang.github.io/zulip_archive/stream/122651-general/topic/merge.20commit.20chat.html#161002201">(Mar 17 2019 at 15:11)</a>:</h4>
<blockquote>
<p>is why we think merge commits are so bad</p>
</blockquote>
<p>There are many blog posts comparing the two strategies. Which of them apply to the Rust project I'm not sure.</p>



<a name="161002207"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122651-general/topic/merge%20commit%20chat/near/161002207" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> davidtwco <a href="https://rust-lang.github.io/zulip_archive/stream/122651-general/topic/merge.20commit.20chat.html#161002207">(Mar 17 2019 at 15:11)</a>:</h4>
<blockquote>
<p>what I don't understand is why we think merge commits are so bad</p>
</blockquote>
<p>I don't think merge commits are bad. bors does merging even when the base commit of a branch isn't the same as master and so we have merge commits in tree. But when that fails, isn't a rebase the only option? If we decided to instead merge your changes with the new master, then I don't think it could then be automatically merged into master when it changes again (but doesn't cause a conflict this time), or could it? I'm struggling to work it out in my head.</p>



<a name="161002252"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122651-general/topic/merge%20commit%20chat/near/161002252" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> davidtwco <a href="https://rust-lang.github.io/zulip_archive/stream/122651-general/topic/merge.20commit.20chat.html#161002252">(Mar 17 2019 at 15:12)</a>:</h4>
<p><del>Or does it always do fast-forward merging?</del> It doesn't.</p>



<a name="161002258"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122651-general/topic/merge%20commit%20chat/near/161002258" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> davidtwco <a href="https://rust-lang.github.io/zulip_archive/stream/122651-general/topic/merge.20commit.20chat.html#161002258">(Mar 17 2019 at 15:12)</a>:</h4>
<p>I think I've thoroughly confused myself.</p>



<a name="161002260"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122651-general/topic/merge%20commit%20chat/near/161002260" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/122651-general/topic/merge.20commit.20chat.html#161002260">(Mar 17 2019 at 15:12)</a>:</h4>
<p>Let's have eternaleye write up a document wrt. why we do the things we do ^^</p>



<a name="161002276"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122651-general/topic/merge%20commit%20chat/near/161002276" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/122651-general/topic/merge.20commit.20chat.html#161002276">(Mar 17 2019 at 15:13)</a>:</h4>
<p>I do know that merge commits exists in the history which are not due to bors but in the PRs themselves</p>



<a name="161002357"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122651-general/topic/merge%20commit%20chat/near/161002357" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jake Goulding <a href="https://rust-lang.github.io/zulip_archive/stream/122651-general/topic/merge.20commit.20chat.html#161002357">(Mar 17 2019 at 15:16)</a>:</h4>
<p>For my own projects, I prefer rebasing for a cleaner (more linear) git history. I also tend to perform an interactive rebase and then execute the linter / tests <em>for every commit</em>, so the fact that I've rewritten history is moot.</p>



<a name="161002426"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122651-general/topic/merge%20commit%20chat/near/161002426" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/122651-general/topic/merge.20commit.20chat.html#161002426">(Mar 17 2019 at 15:17)</a>:</h4>
<p><span class="user-mention" data-user-id="116155">@Jake Goulding</span> does that mean that all your commits can be built?</p>



<a name="161002429"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122651-general/topic/merge%20commit%20chat/near/161002429" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jake Goulding <a href="https://rust-lang.github.io/zulip_archive/stream/122651-general/topic/merge.20commit.20chat.html#161002429">(Mar 17 2019 at 15:17)</a>:</h4>
<p>In some technical sense, merge commits are better because they preserve the original history, as most people don't ensure that tests pass (or even that code compiles) for every commit, much less after rebasing</p>



<a name="161002433"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122651-general/topic/merge%20commit%20chat/near/161002433" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/122651-general/topic/merge.20commit.20chat.html#161002433">(Mar 17 2019 at 15:18)</a>:</h4>
<p>(I find that encourages large commits myself)</p>



<a name="161002479"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122651-general/topic/merge%20commit%20chat/near/161002479" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jake Goulding <a href="https://rust-lang.github.io/zulip_archive/stream/122651-general/topic/merge.20commit.20chat.html#161002479">(Mar 17 2019 at 15:18)</a>:</h4>
<p>Yes, in the vast majority of cases. This greatly aids with the ability to bisect.</p>



<a name="161002486"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122651-general/topic/merge%20commit%20chat/near/161002486" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jake Goulding <a href="https://rust-lang.github.io/zulip_archive/stream/122651-general/topic/merge.20commit.20chat.html#161002486">(Mar 17 2019 at 15:19)</a>:</h4>
<p>I do not, but do think it takes effort. It's like writing; editing is as equally important as the content generation.</p>



<a name="161002500"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122651-general/topic/merge%20commit%20chat/near/161002500" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/122651-general/topic/merge.20commit.20chat.html#161002500">(Mar 17 2019 at 15:19)</a>:</h4>
<p>Ah; true. <span class="user-mention" data-user-id="116155">@Jake Goulding</span> but one could ostensibly mark commits with "this is test-worthy"</p>



<a name="161002508"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122651-general/topic/merge%20commit%20chat/near/161002508" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jake Goulding <a href="https://rust-lang.github.io/zulip_archive/stream/122651-general/topic/merge.20commit.20chat.html#161002508">(Mar 17 2019 at 15:19)</a>:</h4>
<p>I don't think such is applicable because you have to have knowledge of the future to do the marking.</p>



<a name="161002551"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122651-general/topic/merge%20commit%20chat/near/161002551" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> davidtwco <a href="https://rust-lang.github.io/zulip_archive/stream/122651-general/topic/merge.20commit.20chat.html#161002551">(Mar 17 2019 at 15:20)</a>:</h4>
<p>That's <del>essentially</del> what we do now with the merge commits from bors.</p>



<a name="161002576"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122651-general/topic/merge%20commit%20chat/near/161002576" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jake Goulding <a href="https://rust-lang.github.io/zulip_archive/stream/122651-general/topic/merge.20commit.20chat.html#161002576">(Mar 17 2019 at 15:21)</a>:</h4>
<p>Yep; and again that's a valid position to take. But, that's effectively the same as "giant commits" as now instead of "it's in this 1000 line commit" you have "it's in this 1000 line merge with 3 commits, none of which compile/pass tests except the last"</p>



<a name="161002577"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122651-general/topic/merge%20commit%20chat/near/161002577" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/122651-general/topic/merge.20commit.20chat.html#161002577">(Mar 17 2019 at 15:21)</a>:</h4>
<p>Yea, was thinking of that...</p>
<p><span class="user-mention" data-user-id="116155">@Jake Goulding</span> hmm... why not... you do a few commits that are small and then eventually you run the tests and it works, and then you do a special bisectable commit</p>



<a name="161002629"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122651-general/topic/merge%20commit%20chat/near/161002629" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> davidtwco <a href="https://rust-lang.github.io/zulip_archive/stream/122651-general/topic/merge.20commit.20chat.html#161002629">(Mar 17 2019 at 15:22)</a>:</h4>
<blockquote>
<p>Yep; and again that's a valid position to take. But, that's effectively the same as "giant commits" as now instead of "it's in this 1000 line commit" you have "it's in this 1000 line merge with 3 commits, none of which compile"</p>
</blockquote>
<p>Those three commits can make it easier to review though. You can logically segment a 1000 line diff into three changes, each with their own messages and rationale.</p>



<a name="161002656"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122651-general/topic/merge%20commit%20chat/near/161002656" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jake Goulding <a href="https://rust-lang.github.io/zulip_archive/stream/122651-general/topic/merge.20commit.20chat.html#161002656">(Mar 17 2019 at 15:23)</a>:</h4>
<blockquote>
<p>easier to review</p>
</blockquote>
<p>Except that you often have to have some knowledge of the three commits forward and back because they don't stand on their own.</p>



<a name="161002710"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122651-general/topic/merge%20commit%20chat/near/161002710" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/122651-general/topic/merge.20commit.20chat.html#161002710">(Mar 17 2019 at 15:24)</a>:</h4>
<p>Another thing I like about it is that taking "snapshots" becomes easier with many commits; less need for big amounts of ctrl+z</p>



<a name="161002715"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122651-general/topic/merge%20commit%20chat/near/161002715" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jake Goulding <a href="https://rust-lang.github.io/zulip_archive/stream/122651-general/topic/merge.20commit.20chat.html#161002715">(Mar 17 2019 at 15:24)</a>:</h4>
<blockquote>
<p>few commits that are small and then eventually you run the tests and it works, and then you <del>do a special bisectable commit</del></p>
</blockquote>
<p>And then squash them to have a single commit ;-)</p>



<a name="161002725"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122651-general/topic/merge%20commit%20chat/near/161002725" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/122651-general/topic/merge.20commit.20chat.html#161002725">(Mar 17 2019 at 15:25)</a>:</h4>
<p>^^</p>



<a name="161002726"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122651-general/topic/merge%20commit%20chat/near/161002726" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jake Goulding <a href="https://rust-lang.github.io/zulip_archive/stream/122651-general/topic/merge.20commit.20chat.html#161002726">(Mar 17 2019 at 15:25)</a>:</h4>
<p>Again, this fits into the editing analogy. To be clear, I do 10s of commits all the time for local development</p>



<a name="161002729"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122651-general/topic/merge%20commit%20chat/near/161002729" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/122651-general/topic/merge.20commit.20chat.html#161002729">(Mar 17 2019 at 15:26)</a>:</h4>
<p><span class="user-mention" data-user-id="116155">@Jake Goulding</span> I should do this more often, it could seriously improve my rust workflow</p>



<a name="161002774"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122651-general/topic/merge%20commit%20chat/near/161002774" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jake Goulding <a href="https://rust-lang.github.io/zulip_archive/stream/122651-general/topic/merge.20commit.20chat.html#161002774">(Mar 17 2019 at 15:26)</a>:</h4>
<p>I reorder, tweak, fix, etc. When I'm "done", I organize, squash, split into multiple PRs, etc. I switch from a mindset of good for me to "good for the reviewer". I'll even identify a potential reviewer and show them the unedited branch and ask how they might <strong>like</strong> to review it.</p>



<a name="161002785"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122651-general/topic/merge%20commit%20chat/near/161002785" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/122651-general/topic/merge.20commit.20chat.html#161002785">(Mar 17 2019 at 15:27)</a>:</h4>
<p><span class="user-mention" data-user-id="116155">@Jake Goulding</span> sshhh :P you make me look too bad :D</p>



<a name="161002786"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122651-general/topic/merge%20commit%20chat/near/161002786" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jake Goulding <a href="https://rust-lang.github.io/zulip_archive/stream/122651-general/topic/merge.20commit.20chat.html#161002786">(Mar 17 2019 at 15:27)</a>:</h4>
<p>I do find that starting with "too small" commits is easier than "too large", but I've learned to handle both cases.</p>



<a name="161002828"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122651-general/topic/merge%20commit%20chat/near/161002828" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jake Goulding <a href="https://rust-lang.github.io/zulip_archive/stream/122651-general/topic/merge.20commit.20chat.html#161002828">(Mar 17 2019 at 15:28)</a>:</h4>
<p>Ah, nah. It's not like I do this all the time. A typo does not require such. ;-)</p>



<a name="161002829"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122651-general/topic/merge%20commit%20chat/near/161002829" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> davidtwco <a href="https://rust-lang.github.io/zulip_archive/stream/122651-general/topic/merge.20commit.20chat.html#161002829">(Mar 17 2019 at 15:28)</a>:</h4>
<p>I like that approach. It's what I try to do, I'm mostly playing devil's advocate w/r/t merge commits.</p>



<a name="161002832"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122651-general/topic/merge%20commit%20chat/near/161002832" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> davidtwco <a href="https://rust-lang.github.io/zulip_archive/stream/122651-general/topic/merge.20commit.20chat.html#161002832">(Mar 17 2019 at 15:28)</a>:</h4>
<p>I'm going to split this off into a topic or two since it's pretty unrelated to the original policy discussion.</p>



<a name="161002894"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122651-general/topic/merge%20commit%20chat/near/161002894" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jake Goulding <a href="https://rust-lang.github.io/zulip_archive/stream/122651-general/topic/merge.20commit.20chat.html#161002894">(Mar 17 2019 at 15:30)</a>:</h4>
<p>I'm a big fan of editing {Stack Overflow, Zulip chats, git commit history} to help future people <span aria-label="wink" class="emoji emoji-1f609" role="img" title="wink">:wink:</span></p>



<a name="161002907"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122651-general/topic/merge%20commit%20chat/near/161002907" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> davidtwco <a href="https://rust-lang.github.io/zulip_archive/stream/122651-general/topic/merge.20commit.20chat.html#161002907">(Mar 17 2019 at 15:30)</a>:</h4>
<p>I'd like it if Zulip said "this was forked from ..." so there's more context to the initial messages though.</p>



<a name="161002918"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122651-general/topic/merge%20commit%20chat/near/161002918" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/122651-general/topic/merge.20commit.20chat.html#161002918">(Mar 17 2019 at 15:31)</a>:</h4>
<p>oh it doesn't? (PS: time for a new topic)</p>



<a name="161002920"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122651-general/topic/merge%20commit%20chat/near/161002920" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/122651-general/topic/merge.20commit.20chat.html#161002920">(Mar 17 2019 at 15:31)</a>:</h4>
<p>(in <code>zulip</code>)</p>



<a name="161002967"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122651-general/topic/merge%20commit%20chat/near/161002967" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> davidtwco <a href="https://rust-lang.github.io/zulip_archive/stream/122651-general/topic/merge.20commit.20chat.html#161002967">(Mar 17 2019 at 15:32)</a>:</h4>
<blockquote>
<p>(in <code>zulip</code>)</p>
</blockquote>
<p>Can't move between streams. This discussion about forking discussions does make sense to fork, but then it'll start with a message that says "I'm going to fork this", which is even more confusing.</p>



<a name="161002983"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122651-general/topic/merge%20commit%20chat/near/161002983" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/122651-general/topic/merge.20commit.20chat.html#161002983">(Mar 17 2019 at 15:33)</a>:</h4>
<p><span class="user-mention" data-user-id="116107">@davidtwco</span> how many levels of meta is that?</p>



<a name="161002985"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122651-general/topic/merge%20commit%20chat/near/161002985" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> davidtwco <a href="https://rust-lang.github.io/zulip_archive/stream/122651-general/topic/merge.20commit.20chat.html#161002985">(Mar 17 2019 at 15:33)</a>:</h4>
<p>Way too many.</p>



<a name="161002987"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122651-general/topic/merge%20commit%20chat/near/161002987" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Pietro Albini <a href="https://rust-lang.github.io/zulip_archive/stream/122651-general/topic/merge.20commit.20chat.html#161002987">(Mar 17 2019 at 15:33)</a>:</h4>
<p>btw backporting merge commits is way more painful than it needs to be</p>



<a name="161003086"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122651-general/topic/merge%20commit%20chat/near/161003086" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jake Goulding <a href="https://rust-lang.github.io/zulip_archive/stream/122651-general/topic/merge.20commit.20chat.html#161003086">(Mar 17 2019 at 15:35)</a>:</h4>
<p><span class="user-mention" data-user-id="121055">@Pietro Albini</span> even the bors merge commits?</p>



<a name="161003093"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122651-general/topic/merge%20commit%20chat/near/161003093" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Pietro Albini <a href="https://rust-lang.github.io/zulip_archive/stream/122651-general/topic/merge.20commit.20chat.html#161003093">(Mar 17 2019 at 15:35)</a>:</h4>
<p>we don't usually backport those :P</p>



<a name="161003145"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122651-general/topic/merge%20commit%20chat/near/161003145" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Pietro Albini <a href="https://rust-lang.github.io/zulip_archive/stream/122651-general/topic/merge.20commit.20chat.html#161003145">(Mar 17 2019 at 15:36)</a>:</h4>
<p>most of the beta branch is just cherry-picked commits</p>



<a name="161003153"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122651-general/topic/merge%20commit%20chat/near/161003153" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jake Goulding <a href="https://rust-lang.github.io/zulip_archive/stream/122651-general/topic/merge.20commit.20chat.html#161003153">(Mar 17 2019 at 15:36)</a>:</h4>
<p>It's just the original authors commit(s) then?</p>



<a name="161003154"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122651-general/topic/merge%20commit%20chat/near/161003154" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Pietro Albini <a href="https://rust-lang.github.io/zulip_archive/stream/122651-general/topic/merge.20commit.20chat.html#161003154">(Mar 17 2019 at 15:36)</a>:</h4>
<p>yep</p>



<a name="161003160"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122651-general/topic/merge%20commit%20chat/near/161003160" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Pietro Albini <a href="https://rust-lang.github.io/zulip_archive/stream/122651-general/topic/merge.20commit.20chat.html#161003160">(Mar 17 2019 at 15:36)</a>:</h4>
<p>for example <a href="https://github.com/rust-lang/rust/pull/59235" target="_blank" title="https://github.com/rust-lang/rust/pull/59235">https://github.com/rust-lang/rust/pull/59235</a></p>



<a name="161003186"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122651-general/topic/merge%20commit%20chat/near/161003186" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Pietro Albini <a href="https://rust-lang.github.io/zulip_archive/stream/122651-general/topic/merge.20commit.20chat.html#161003186">(Mar 17 2019 at 15:37)</a>:</h4>
<p>and sometimes a standalone commit made by me that fixes differences between master and beta</p>



<a name="161003238"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122651-general/topic/merge%20commit%20chat/near/161003238" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Pietro Albini <a href="https://rust-lang.github.io/zulip_archive/stream/122651-general/topic/merge.20commit.20chat.html#161003238">(Mar 17 2019 at 15:38)</a>:</h4>
<p>but if I cherry-pick a merge commit I might pull in unwanted changes</p>



<a name="161009328"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122651-general/topic/merge%20commit%20chat/near/161009328" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Vadim Petrochenkov <a href="https://rust-lang.github.io/zulip_archive/stream/122651-general/topic/merge.20commit.20chat.html#161009328">(Mar 17 2019 at 18:22)</a>:</h4>
<p>I worked with rebase-based workflows not only in rust, but also on all jobs I had.<br>
So I'm not actually sure how you can live with merge alone.</p>



<a name="161009348"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122651-general/topic/merge%20commit%20chat/near/161009348" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Vadim Petrochenkov <a href="https://rust-lang.github.io/zulip_archive/stream/122651-general/topic/merge.20commit.20chat.html#161009348">(Mar 17 2019 at 18:23)</a>:</h4>
<p>Suppose you have some local work and master went ahead, and you need to sync, and there is some conflict, and you make merge and have to create a merge commit.</p>



<a name="161009404"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122651-general/topic/merge%20commit%20chat/near/161009404" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Vadim Petrochenkov <a href="https://rust-lang.github.io/zulip_archive/stream/122651-general/topic/merge.20commit.20chat.html#161009404">(Mar 17 2019 at 18:24)</a>:</h4>
<p>If you continue the work for some time you need multiple syncs (e.g. daily), and you have to have multiple merge commits in the history? That's awful!</p>



<a name="161009611"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122651-general/topic/merge%20commit%20chat/near/161009611" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Vadim Petrochenkov <a href="https://rust-lang.github.io/zulip_archive/stream/122651-general/topic/merge.20commit.20chat.html#161009611">(Mar 17 2019 at 18:30)</a>:</h4>
<p>So, the result of the work when you submit it is not an "incapsulated unit" (a sequence of commits representing the work), but something else.<br>
I'm not actually sure how you can cherry-pick it (or parts of it) somewhere else if necessary in this case, or perform a similar operation.</p>



<a name="161010240"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122651-general/topic/merge%20commit%20chat/near/161010240" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jake Goulding <a href="https://rust-lang.github.io/zulip_archive/stream/122651-general/topic/merge.20commit.20chat.html#161010240">(Mar 17 2019 at 18:51)</a>:</h4>
<p><span class="user-mention" data-user-id="123856">@Vadim Petrochenkov</span> I'm also a fan of rebase, but I can still point out that the merge-based result (yes, with all of those "extra" merge commits) is more technically accurate to what the developer did (see my point above about running the tests at each step of history after a rebase)</p>



<a name="161010498"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122651-general/topic/merge%20commit%20chat/near/161010498" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jake Goulding <a href="https://rust-lang.github.io/zulip_archive/stream/122651-general/topic/merge.20commit.20chat.html#161010498">(Mar 17 2019 at 18:59)</a>:</h4>
<p>Cherry-picking should have more-or-less the same problems as a rebase strategy — in both cases you are trying to transplant code that assumes some state of the universe into a different universe.</p>



<a name="161133379"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122651-general/topic/merge%20commit%20chat/near/161133379" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Björn Steinbrink <a href="https://rust-lang.github.io/zulip_archive/stream/122651-general/topic/merge.20commit.20chat.html#161133379">(Mar 19 2019 at 09:20)</a>:</h4>
<p>Having a accurate history of what a developer did is often just not that useful if you, for example, try to figure out why a piece of code came to be, because blame and log will give you a bunch of commits that show you that the developer had intermediate bugs here and there, and typos and what not, but you'll still have to figure out the big picture yourself, which is something that the original developer (hopefully) already did back then, but didn't care to make available to others in form of a clean history with well written commit messages.</p>



<a name="161133508"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122651-general/topic/merge%20commit%20chat/near/161133508" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Björn Steinbrink <a href="https://rust-lang.github.io/zulip_archive/stream/122651-general/topic/merge.20commit.20chat.html#161133508">(Mar 19 2019 at 09:22)</a>:</h4>
<p>I still remember hunting down a bug (not I. Rust), where blame only led me to a commit that had nothing but a poop emoji as its commit message, and the changed line went from buggy to buggy there. The PR was littered with such commits, no fun at all.</p>



<a name="161138416"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122651-general/topic/merge%20commit%20chat/near/161138416" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/122651-general/topic/merge.20commit.20chat.html#161138416">(Mar 19 2019 at 10:38)</a>:</h4>
<p>yes: history crafting is as much an documentation-art as comment authoring is</p>



<a name="161141686"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122651-general/topic/merge%20commit%20chat/near/161141686" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Björn Steinbrink <a href="https://rust-lang.github.io/zulip_archive/stream/122651-general/topic/merge.20commit.20chat.html#161141686">(Mar 19 2019 at 11:33)</a>:</h4>
<blockquote>
<p>I still remember hunting down a bug (not I. Rust)</p>
</blockquote>
<p>I meant "not in Rust" there.</p>



<hr><p>Last updated: Aug 07 2021 at 22:04 UTC</p>
</html>